Systems and methods for stabilizing videos

ABSTRACT

A video, such as a spherical video, may include motion due to motion of one or more image capture devices during capture of the video. Motion of the image capture devices during the capture of the video may cause the playback of the video to appear jerky/shaky. The video may be stabilized by using both a horizontal feature and a fixed feature captured within the video.

FIELD

This disclosure relates to stabilizing a video based on a horizontalfeature and a fixed feature within the video.

BACKGROUND

Capture of video content (e.g., spherical video content) by one or moreimage capture devices may include artifacts due to rotational motion ofthe image capture device(s). Motion (e.g., rotation) of the imagecapture device(s) during the capture of the video content may cause theplayback of the video content to appear jerky/shaky.

SUMMARY

This disclosure relates to stabilizing videos. Video informationdefining a spherical video and/or other information may be obtained. Thespherical video may include spherical video content having a progresslength. The spherical video content may include visual content viewablefrom a point of view as a function of progress through the progresslength. A horizontal feature within the visual content may beidentified. A fixed feature within the visual content may be identified.The fixed feature may be different from the horizontal feature. Thevisual content may be rotated based on the horizontal feature, the fixedfeature, and/or other information to stabilize the spherical video.

A system that stabilizes videos may include one or more electronicstorage, processor and/or other components. The electronic storage maystore video information defining videos, information relating to videos,information relating to horizontal features, information relating tofixed feature, information relating to rotation of videos, and/or otherinformation.

The processor(s) may be configured by machine-readable instructions.Executing the machine-readable instructions may cause the processor(s)to facilitate stabilizing videos. The machine-readable instructions mayinclude one or more computer program components. The computer programcomponents may include one or more of a video information component, ahorizontal feature component, a fixed feature component, a rotationcomponent, and/or other computer program components.

The video information component may be configured to obtain videoinformation and/or other information. The video information componentmay obtain video information from one or more storage locations. Thevideo information component may obtain video information duringacquisition of the video and/or after acquisition of the video by one ormore image capture devices.

Video information may define a video. The video may include videocontent having a progress length. The video content may include visualcontent viewable as a function of progress through the progress length.For example, video information may define a spherical video, and thespherical video may include spherical video content. The spherical videocontent may include visual content viewable from a point of a view as afunction of progress through the progress length.

The horizontal feature component may be configured to identify ahorizontal feature within the visual content. In some implementations,the horizontal feature may include a depiction of a horizon within thevisual content. In some implementations, the horizon may be identifiedbased on variance of pixel characteristic within the visual content. Forexample, the horizon may be identified such that a first variance ofpixel characteristics below the horizon and a second variance of pixelcharacteristics above the horizon are minimized.

The fixed feature component may be configured to identify a fixedfeature within the visual content. The fixed feature may be differentfrom the horizontal feature. In some implementations, the fixed featuremay include a depiction of a distant object within the visual content.In some implementations, the distant object may include a light source,such as the Sun. In some implementations, the distant object may beidentified based on identification of a round shape and saturation ofpixels within the round shape. In some implementations, position of thefixed feature within the visual content may be changed as the functionof progress through the progress length to account for movement of thedistant object (e.g., the Sun) during the progress length.

The rotation component may be configured to rotate the visual contentbased on the horizontal feature, the fixed feature, and/or otherinformation to stabilize the video (e.g., spherical video). In someimplementations, rotation of the visual content based on the horizontalfeature may provide tilt stabilization and rotation of the visualcontent based on the fixed feature may provide lateral stabilization.

These and other objects, features, and characteristics of the systemand/or method disclosed herein, as well as the methods of operation andfunctions of the related elements of structure and the combination ofparts and economies of manufacture, will become more apparent uponconsideration of the following description and the appended claims withreference to the accompanying drawings, all of which form a part of thisspecification, wherein like reference numerals designate correspondingparts in the various figures. It is to be expressly understood, however,that the drawings are for the purpose of illustration and descriptiononly and are not intended as a definition of the limits of theinvention. As used in the specification and in the claims, the singularform of “a,” “an,” and “the” include plural referents unless the contextclearly dictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system that stabilizes videos.

FIG. 2 illustrates a method for stabilizing videos.

FIG. 3 illustrates an example spherical visual content.

FIG. 4 illustrates example viewing directions for spherical videocontent.

FIGS. 5A-5B illustrate example extents of spherical visual content.

FIG. 6 illustrates example rotations of visual content.

FIGS. 7A-7D illustrate example rotations of spherical visual content.

DETAILED DESCRIPTION

FIG. 1 illustrates a system 10 for stabilizing videos. The system 10 mayinclude one or more of a processor 11, an interface 12 (e.g., bus,connection, wireless interface), an electronic storage 13, and/or othercomponents. Video information defining a spherical video and/or otherinformation may be obtained by the processor 11. The spherical video mayinclude spherical video content having a progress length. The sphericalvideo content may include visual content viewable from a point of viewas a function of progress through the progress length. A horizontalfeature within the visual content may be identified. A fixed featurewithin the visual content may be identified. The fixed feature may bedifferent from the horizontal feature. The visual content may be rotatedbased on the horizontal feature, the fixed feature, and/or otherinformation to stabilize the spherical video.

The electronic storage 13 may be configured to include electronicstorage medium that electronically stores information. The electronicstorage 13 may store software algorithms, information determined by theprocessor 11, information received remotely, and/or other informationthat enables the system 10 to function properly. For example, theelectronic storage 13 may store video information defining videos,information relating to videos, information relating to horizontalfeatures, information relating to fixed feature, information relating torotation of videos, and/or other information.

A video may include content captured by a single image capture device(e.g., image sensor, camera), multiple image capture devices, and/or oneor more other capture devices (e.g., sound sensor, microphone). A videoincluding content captured by multiple capture devices may includecontent captured at the same location(s), content captured at differentlocations, content captured at the same time(s), and/or content capturedat different times. A video may include edited content. For example, avideo may include content of one or more other videos that have beenedited into a video edit.

Content of one or more videos may be referred to as video content. Videocontent may have a progress length. That is, a video may include videocontent having a progress length. A progress length may be defined interms of time durations and/or frame numbers. For example, video contentof a video may have a time duration of 60 seconds. Video content of avideo may have 1800 video frames. Video content having 1800 video framesmay have a play time duration of 60 seconds when viewed at 30 frames persecond. Other progress lengths, time durations, and frame numbers arecontemplated.

Video content may include visual content, audio content, and/or othercontent. For example, video content may include visual content viewableas a function of progress through the progress length of the videocontent, audio content playable as a function of progress through theprogress length of the video content, and/or other content that may beplayed back as a function of progress through the progress length of thevideo content.

Visual content may refer to content of one or more images and/or one ormore videos that may be consumed visually. For example, visual contentmay be included within one or more image and/or one or more video framesof a video. The video frame(s) may define the visual content of thevideo content. That is, video content may include video frame(s) thatdefine the visual content of the video content. Video frame(s) maydefine visual content viewable as a function of progress through theprogress length of the video content. A video frame may include an imageof the video content at a moment within the progress length of the videocontent. Visual content may be generated based on light received withina field of view of a single image sensor or within fields of view ofmultiple image sensors during a capture period.

Audio content may include audio/sound captured (e.g., by soundsensor(s), microphone(s)) with the capture of the visual content and/oraudio/sound provided as an accompaniment for the visual content. Audiocontent may include one or more of voices, activities, songs, music,and/or other audio/sounds. For example, audio content may include soundscaptured by a single sound sensor or an array of sound sensors. Thesound sensor(s) may receive and convert sounds into output signals. Theoutput signals may convey sound information and/or other information.The sound information may define audio content in one or more formats,such as WAV, MP3, MP4, RAW. Audio content may include audio/soundgenerated by one or more computing devices, such as procedural audio.Audio content may be synchronized with the visual content. For example,audio content may include music, song, and/or soundtrack, and the visualcontent of the video content may be synchronized with music, song,and/or soundtrack.

In some implementations, video content may include one or more ofspherical video content, virtual reality content, and/or other videocontent. For example, video information may define a spherical video,and the spherical video may include spherical video content. Sphericalvideo content and/or virtual reality content may include visual contentviewable from one or more points of view as a function of progressthrough the progress length of the spherical/virtual reality videocontent.

Spherical video content may refer to video content generated throughcapture of multiple views from a single location. Spherical videocontent may be captured through the use of one or more image capturedevices to capture images/videos from a location. The capturedimages/videos may be stitched together to form the spherical videocontent. Spherical video content may include full spherical videocontent (360 degrees of capture) or partial spherical video content(less than 360 degrees of capture). Partial spherical video content maybe referred to as panoramic video content.

Visual content of spherical video content may be included within one ormore spherical video frames of the spherical video. The spherical videoframe(s) may define the visual content of the video content. That is,spherical video content may include spherical video frame(s) that definethe visual content of the spherical video content. Spherical videoframe(s) may define visual content viewable from a point of view (e.g.,within a sphere, center of a sphere) as a function of progress throughthe progress length of the spherical video content.

FIG. 3 illustrates an example spherical visual content 300. Thespherical visual content 300 may include content of a spherical image ora spherical video. The spherical visual content 300 may include visualcontent viewable from a point of view (e.g., center of sphere) as afunction of progress through the progress length of the spherical visualcontent 300. FIG. 3 illustrates example rotational axes for thespherical visual content 300. Rotational axes for the spherical visualcontent 300 may include a yaw axis 310, a pitch axis 320, a roll axis330, and/or other axes. Rotations about one or more of the yaw axis 310,the pitch axis 320, the roll axis 330, and/or other axes may definedirections of view (e.g., viewing directions) for the spherical visualcontent 300.

For example, a 0-degree rotation of the spherical visual content 300around the yaw axis 310 may correspond to a front viewing direction. A90-degree rotation of the spherical visual content 300 around the yawaxis 310 may correspond to a right viewing direction. A 180-degreerotation of the spherical visual content 300 around the yaw axis 310 maycorrespond to a back-viewing direction. A −90-degree rotation of thespherical visual content 300 around the yaw axis 310 may correspond to aleft viewing direction.

A 0-degree rotation of the spherical visual content 300 around the pitchaxis 320 may correspond to a viewing direction that may be level withrespect to horizon. A 45-degree rotation of the spherical visual content300 around the pitch axis 320 may correspond to a viewing direction thatmay be pitched up with respect to horizon by 45-degrees. A 90-degreerotation of the spherical visual content 300 around the pitch axis 320may correspond to a viewing direction that may be pitched up withrespect to horizon by 90-degrees (looking up). A −45-degree rotation ofthe spherical visual content 300 around the pitch axis 320 maycorrespond to a viewing direction that may be pitched down with respectto horizon by 45-degrees. A −90-degree rotation of the spherical visualcontent 300 around the pitch axis 320 may correspond to a viewingdirection that may be pitched down with respect to horizon by 90-degrees(looking down).

A 0-degree rotation of the spherical visual content 300 around the rollaxis 330 may correspond to a viewing direction that may be upright. A90-degree rotation of the spherical visual content 300 around the rollaxis 330 may correspond to a viewing direction that may be rotated tothe right by 90-degrees. A −90-degree rotation of the spherical visualcontent 300 around the roll axis 330 may correspond to a viewingdirection that may be rotated to the left by 90-degrees. Other rotationsand viewing directions are contemplated.

A playback of video content (e.g., the spherical video content) mayinclude presentation of one or more portions of visual content on one ormore displays based on a viewing window and/or other information. Aviewing window may define extents of the visual content viewable on oneor more displays as the function of progress through the progress lengthof the video content. The viewing window may define extents of thevisual content presented on the display(s) as the function of progressthrough the progress length of the video content. For spherical videocontent, the viewing window may define extents of the visual contentviewable from the point of view as the function of progress through theprogress length of the spherical video content.

The viewing window may be characterized by viewing directions, viewingsizes (e.g., viewing zoom, viewing magnification), viewing rotations,and/or other information. A viewing direction may define a direction ofview for video content. A viewing direction may define the angle/visualportion of the video content at which the viewing window may bedirected. A viewing direction may define a direction of view for thevideo content selected by a user, defined by instructions for viewingthe video content, and/or determined based on other information aboutviewing the video content as a function of progress through the progresslength of the video content (e.g., director track specifying viewingdirection to be presented during playback as a function of progressthrough the progress length of the video content). For spherical videocontent, a viewing direction may define a direction of view from thepoint of view from which the visual content may be defined. Viewingdirections for the video content may be characterized by rotationsaround the yaw axis 310, the pitch axis 320, the roll axis 330, and/orother axes. For example, a viewing direction of a 0-degree rotation ofthe video content around a yaw axis (e.g., the yaw axis 310) and a0-degree rotation of the video content around a pitch axis (e.g., thepitch axis 320) may correspond to a front viewing direction (the viewingwindow may be directed to a forward portion of the visual contentcaptured within the spherical video content).

For example, FIG. 4 illustrates example changes in viewing directions400 (e.g., selected by a user for video content, specified by adirector's track) as a function of progress through the progress lengthof the video content. The viewing directions 400 may change as afunction of progress through the progress length of the video content.For example, at 0% progress mark, the viewing directions 400 maycorrespond to a zero-degree yaw angle and a zero-degree pitch angle. At25% progress mark, the viewing directions 400 may correspond to apositive yaw angle and a negative pitch angle. At 50% progress mark, theviewing directions 400 may correspond to a zero-degree yaw angle and azero-degree pitch angle. At 75% progress mark, the viewing directions400 may correspond to a negative yaw angle and a positive pitch angle.At 87.5% progress mark, the viewing directions 400 may correspond to azero-degree yaw angle and a zero-degree pitch angle. The viewingdirections 400 may define a path of movement for the viewing window(e.g., a trajectory followed by the viewing window) as a function ofprogress through the progress length of the video content. Other viewingdirections are contemplated.

A viewing size may define a size of a viewing window. A viewing size maydefine a size (e.g., size, magnification, viewing angle) of viewableextents of visual content within the video content. A viewing size maydefine the dimensions of the viewing window. A viewing size may define asize of viewable extents of visual content within the video contentselected by a user, defined by instructions for viewing the videocontent, and/or determined based on other information about viewing thevideo content as a function of progress through the progress length ofthe video content (e.g., director track specifying viewing size to bepresented as a function of progress through the progress length of thevideo content). In some implementations, a viewing size may definedifferent shapes of viewable extents. For example, a viewing window maybe shaped as a rectangle, a triangle, a circle, and/or other shapes.

A viewing rotation may define a rotation of the viewing window. Aviewing rotation may define one or more rotations of the viewing windowabout one or more axis. In some implementations, a viewing rotation maybe defined by one or more parameters of a viewing direction. Forexample, a viewing rotation may be defined based on rotation about anaxis (e.g., the roll axis 330) corresponding to a viewing direction. Aviewing rotation may define a rotation of the viewing window selected bya user, defined by instructions for viewing the video content, and/ordetermined based on other information about viewing the video content asa function of progress through the progress length of the video content(e.g., director track specifying viewing rotation to be used as afunction of progress through the progress length of the video content).For example, a viewing rotation of a viewing window having a rectangularshape may determine whether the rectangular viewing window is to bepositioned in a portrait orientation (e.g., for a portrait view of thevideo content), in a landscape orientation (e.g., for a landscape viewof the video content), and/or other orientation with respect to thevisual content of the video content.

FIGS. 5A-5B illustrate examples of extents for spherical visual content500. In FIG. 5A, the size of the viewable extent of the spherical visualcontent 500 may correspond to the size of extent A 510. In FIG. 5B, thesize of viewable extent of the spherical visual content 500 maycorrespond to the size of extent B 520. Viewable extent of the sphericalvisual content 500 in FIG. 5A may be smaller than viewable extent of thespherical visual content 500 in FIG. 5B. The viewable extent of thespherical visual content 500 in FIG. 5B may be more tilted with respectto the spherical visual content 500 than viewable extent of thespherical visual content 500 in FIG. 5A. Other viewing sizes and viewingrotations are contemplated.

Referring back to FIG. 1, the processor 11 may be configured to provideinformation processing capabilities in the system 10. As such, theprocessor 11 may comprise one or more of a digital processor, an analogprocessor, a digital circuit designed to process information, a centralprocessing unit, a graphics processing unit, a microcontroller, ananalog circuit designed to process information, a state machine, and/orother mechanisms for electronically processing information. Theprocessor 11 may be configured to execute one or more machine-readableinstructions 100 to facilitate stabilizing videos. The machine-readableinstructions 100 may include one or more computer program components.The machine-readable instructions 100 may include one or more of a videoinformation component 102, a horizontal feature component 104, a fixedfeature component 106, a rotation component 108, and/or other computerprogram components.

The video information component 102 may be configured to obtain videoinformation and/or other information. Obtaining video information mayinclude one or more of accessing, acquiring, analyzing, determining,examining, identifying, loading, locating, opening, receiving,retrieving, reviewing, storing, and/or otherwise obtaining the videoinformation. The video information component 102 may obtain videoinformation from one or more locations. For example, the videoinformation component 102 may obtain video information from a storagelocation, such as the electronic storage 13, electronic storage ofinformation and/or signals generated by one or more image sensors,electronic storage of a device accessible via a network, and/or otherlocations. The video information component 102 may obtain videoinformation from one or more hardware components (e.g., an image sensor)and/or one or more software components (e.g., software running on acomputing device).

The video information component 102 may be configured to obtain videoinformation defining a video during acquisition of the video and/orafter acquisition of the video by one or more image sensors/imagecapture devices. For example, the video information component 102 mayobtain video information defining a video while the video is beingcaptured by one or more image sensors/image capture devices. The videoinformation component 102 may obtain video information defining a videoafter the video has been captured and stored in memory (e.g., theelectronic storage 13).

In some implementations, the video information may be obtained based onuser interaction with a user interface/application (e.g., video editingapplication), and/or other information. For example, a userinterface/application may provide option(s) for a user to select one ormore videos which are to be stabilized. The video information definingthe video(s) may be obtained based on the user's selection of thevideo(s) through the user interface/video application.

Video information may define one or more videos (e.g., non-sphericalvideo, spherical video, panoramic video). Video information may bestored within a single file or multiple files. For example, videoinformation defining a video may be stored within a video file, multiplevideo files, a combination of different files (e.g., a visual file andan audio file), and/or other files. Video information may be stored inone or more formats/container. A format may refer to one or more ways inwhich the information defining a video is arranged/laid out (e.g., fileformat). A container may refer to one or more ways in which informationdefining a video is arranged/laid out in association with otherinformation (e.g., wrapper format).

The horizontal feature component 104 may be configured to identify oneor more horizontal features within the visual content. A horizontalfeature may refer to a portion of the visual content that has one ormore horizontal characteristics. A horizontal feature may refer to aportion of the visual content that is shaped horizontally and has thesame or similar pixel characteristics. A horizontal feature may refer toa portion of the visual content that is shaped horizontally and dividethe visual content into two portions with different pixelcharacteristics. A pixel characteristic may refer to a feature or aquality of a pixel, such as color, hue, saturation, lightness,luminance, and/or other pixel characteristic. For example, a horizontalfeature may include a depiction of a horizon within the visual content.

Identifying a horizontal feature within the visual content may includedetermining whether a horizontal feature is included within the visualcontent and/or determining the location of the horizontal feature withinthe visual content. A horizontal feature may be identified based onvisual analysis of the visual content. For example, the visual contentmay be analyzed to identify horizontally shaped portion that has thesame or similar pixel characteristics. The visual content may beanalyzed to determine the variance of pixel characteristic within thevisual content. Variance of pixel characteristic may refer to how thepixel characteristic varies throughout the visual content. Thehorizontal feature may be identified such that the variance of one ormore pixel characteristics below the horizon feature and the variance ofone or more pixel characteristics above the horizon feature areminimized. The visual content may be analyzed to determine the means ofpixel characteristic within different portions of the visual content. Amean of pixel characteristic may refer to an average of pixel characterswithin a portion of the visual content. The horizontal feature may beidentified such that the difference in the mean of one or more pixelcharacteristics below the horizon feature and the mean of one or morepixel characteristics above the horizon feature are maximized. Otheridentification of horizontal feature(s) within visual content arecontemplated.

The fixed feature component 106 may be configured to identify one ormore fixed features within the visual content. A fixed feature may referto a portion of the visual content that depicts an objects that is fixedor relatively fixed in space during capture of the visual content. Afixed feature may be different from a horizontal feature. In someimplementations, a fixed feature may include a depiction of a distantobject within the visual content. A distant object may refer to anobject that was distant from the image capture device(s) that capturedthe visual content. In some implementations, the fixed feature mayinclude a depiction of a light source, such as the Sun, the moon, orsome other distant light source. Given that the Sun, the moon, or someother distant light source is far away from the image capture device(s)and that they are fixed/relatively fixed given the duration of thevideo, the depiction of such objects may be treated as a fixed featurefor stabilization of the visual content. In some implementations,position of the fixed feature within the visual content may be changedas the function of progress through the progress length to account formovement of the distant object (e.g., the Sun, moon) during the progresslength. That is, the position of the fixed feature may be changed toaccount for the movement of the distant object during capture of thevisual content.

Identifying a fixed feature within the visual content may includedetermining whether a fixed feature is included within the visualcontent and/or determining the location of the fixed feature within thevisual content. A fixed feature may be identified based on visualanalysis of the visual content. For example, a distant light source(e.g., the Sun, the moon, other distant light source) may be identifiedbased on identification of a particular shape (e.g., round shape,crescent shape) and saturation of pixels within the particular shape.Because the light sources are generating light, the pixels depicting thelight sources within the visual content may be saturated. Identificationof a fixed feature based on shape and saturation of pixels may provide alight-weight visual analysis to identify the fixed feature.Identification of a fixed feature based on shape and saturation ofpixels may require consumption of small amount of resources (e.g.,battery charge, processing power, memory). For example, identificationof a fixed feature based on shape and saturation of pixels may requireconsumption of less resources than other object detection techniquesand/or distant object detection using a three-dimensional map of theenvironment around the image capture device. Other identification offixed feature(s) within visual content are contemplated.

The rotation component 108 may be configured to rotate the visualcontent based on the horizontal feature, the fixed feature, and/or otherinformation. The rotation of the visual content may stabilize the video(e.g., spherical video). For example, during the capture of the video,the image capture device(s) may have been rotated, which may causeplayback of the video to appear jerky or shaky. The stabilization of thevisual content may remove jerky or shaky motion of the video. Therotational component 108 may use the positions of the horizontal featureand the fixed feature within the visual content to rotate the visualcontent (e.g., about one or more of yaw axis, pitch axis, and/or rollaxis; about one or more points). The rotation of the visual content bythe rotation component 108 may compensate for rotations of the imagecapture device(s) during capture of the visual content.

The rotation of the visual content by the rotation component 108 mayinclude rotation of one or more video frames (e.g., spherical videoframes) of the video. The visual content may be rotated such that avideo frame (e.g., a spherical video frame) is rotated based on thepositions of the horizontal feature and the fixed feature within thevideo frame, one or more preceding video frames, and/or one or morefollowing video frames. The rotation of the visual content may includerotation of one or more video frames (e.g., spherical video frames) ofthe video to compensate for the rotations of the image capture device(s)during capture of the video and to stabilize the video (e.g., sphericalvideo). Such rotation of the visual content may orient the video framesaccording to the positions of the horizontal feature and the fixedfeature within the visual content.

Rotation of the visual content based on one of the features within thevisual content may not be sufficient to stabilize the visual content.For example, rotation of the visual content based on just the horizontalfeature may not be sufficient to stabilized the visual content. Forexample, FIG. 6 illustrates example rotations of visual content. FIG. 6illustrates three views 610, 620, 630 of an image (a video frame of avideo). The image may include a spherical image, and the views 610, 620,630 may include visual content of the spherical image within a viewingwindow. Based on rotations of image capture device(s) during capture ofthe spherical image, a viewing window directed at the front of thespherical image may how a tiled view of a scene, such as shown withinthe view 610. The view 610 may include a depiction of the Sun 602, adepiction of a horizon 604, and a depiction of an object 606.Stabilization of the image based on the depiction of the horizon 604 mayresult in the view 620, the view 630, and/or other views. Whilestabilization of the image based on the depiction of the horizon 604 maylevel the image based on the horizon (e.g., the horizon is leveledwithin the rotated image), the stabilization based on the horizon maynot be able to fix the lateral rotation of the visual content. That is,simply based on the horizon, stabilization of the visual content may notbe able to determine which of the views 620, 630 or other viewrepresents a stabilized view of the image.

By using the depiction of fixed/relative fixed object (e.g., a distantobject, the Sun) as a fixed point, the visual content may be fullystabilized. The rotation of the visual content based on the horizontalfeature and the fixed feature may include minimization of thedisplacement of the horizontal feature and the fixed feature to fullystabilized the visual content. For example, referring to FIG. 6, thedisplacement of the depiction of the horizon 604 and the depiction ofthe Sun 602 may be minimized between video frames to stabilize the videoframes within the video. Such minimization of the displacement may beused to determine which of the views 620, 630 or other view represents astabilized view of the image.

In some implementations, position of the fixed feature within the visualcontent may be changed as the function of progress through the progresslength to account for movement of the relatively fixed object (e.g., theSun, moon) during capture of the visual content. That is, the positionof the fixed feature within video frames of a video may change toaccount for the movement of the object that is relatively fixed duringcapture of the video frames.

In some implementations, rotation of the visual content based on thehorizontal feature may provide tilt stabilization and rotation of thevisual content based on the fixed feature may provide lateralstabilization. Tilt stabilization may include stabilization to removesloping of horizontal feature within the visual content. Lateralstabilization may include side-to-side stabilization of the visualcontent.

For example, FIGS. 7A-7D illustrate example rotations of sphericalvisual content 700. FIG. 7A illustrates an unrotated representation ofthe spherical visual content 700. As shown in FIG. 7A, a horizontalfeature 702 captured within the spherical visual content 700 may besloped. FIG. 7B illustrates a rotated representation of the sphericalvisual content 700. As shown in FIG. 7B, the spherical visual content700 may be tilted via rotation A 710, and the horizontal feature 702captured within the spherical visual content 700 may be leveled. FIG. 7Cillustrates a rotated representation of the spherical visual content700. As shown in FIG. 7C, the spherical visual content 700 may be tiltedvia rotation A 710, and the horizontal feature 702 captured within thespherical visual content 700 may be leveled. The spherical visualcontent 700 may also be rotated laterally via rotation B 720. As shownin FIGS. 7B and 7C, stabilization of the spherical visual content 700based on just the horizontal feature 702 may not be able to account forlateral rotation of the spherical visual content 700 and may not fullystabilize the spherical visual content 700. Stabilization of thespherical visual content 700 based on just the horizontal feature 702may allow the spherical visual content 700 to spin laterally.

FIG. 7D illustrates a rotated representation of the spherical visualcontent 700. As shown in FIG. 7D, the spherical visual content 700 maybe tilted via rotation A 710, and the horizontal feature 702 capturedwithin the spherical visual content 700 may be leveled. The sphericalvisual content 700 may also be rotated laterally via rotation C 730. Therotation C 730 may be performed based on the position of a fixed feature704 within the spherical visual content. The fixed feature 704 maystabilize the spherical visual content 700 laterally, and preventlateral movement/spinning of the spherical visual content 700. Thus,stabilization of the spherical visual content 700 based on both thehorizontal feature 702 and the fixed feature 704 may fully stabilizedthe spherical visual content 700 (e.g., stabilize the spherical visualcontent 700 vertically and laterally).

In some implementations, the rotated visual content may be warped. Thewarping of the visual content may include warping of one or more videoframes (e.g., spherical video frames) of the video to compensate forrolling shutter of image sensor(s) during capture of the visual contentand to provide rolling shutter correction. Rolling shutter of the imagesensor(s) may include pixel lines of the video frames being acquiredprogressively (e.g., the upper lines of a video frame are not acquiredat the same time as the lower lines). If an image capture device ismoving during video capture, a video frame of the video may includediscontinuities between pixel lines due to rolling shutter.

Warping of visual content may include manipulation of one or moreportions of video frames of the video. The visual content may be warpedsuch that a video frame (e.g., a spherical video frame) is warped basedon the rotation(s) of the image capture device(s) during capture of thevideo frame and/or other information. The rotation(s) of the imagedevice(s) may be used to determine how much/quickly the image capturedevice(s) moved during visual content capture and to determine in whatdirection and/or by what amount different portions (e.g., pixel lines)of the video frames should be warped.

In some implementations, the visual content may be warped further basedon acquisition information for the visual content and/or otherinformation. The acquisition information may characterize one or moreexposure times of the image capture device(s) used to capture the visualcontent. One or more video frames of the video may be warped accordingto the rotation(s) of the image capture device(s) during the frameacquisition (exposure) to perform rolling shutter correction. Forexample, the center of a video frame may be considered as the zeroreference, and other parts of the video frame may be smoothly warpedconsidering the rotation of the image capture device(s) and the exposuretime during the video frame acquisition.

In some implementations, rotation of visual content may be stored asrotated visual content and/or instruction for rendering visual content.For example, rotation of the visual content may be stored as a videowith one or more rotated video frames. Rotation of the visual contentmay be stored as information defining how one or more video frames of avideo should be rotated during presentation to provide a stabilizedpresentation of the video.

Implementations of the disclosure may be made in hardware, firmware,software, or any suitable combination thereof. Aspects of the disclosuremay be implemented as instructions stored on a machine-readable medium,which may be read and executed by one or more processors. Amachine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputing device). For example, a tangible computer-readable storagemedium may include read-only memory, random access memory, magnetic diskstorage media, optical storage media, flash memory devices, and others,and a machine-readable transmission media may include forms ofpropagated signals, such as carrier waves, infrared signals, digitalsignals, and others. Firmware, software, routines, or instructions maybe described herein in terms of specific exemplary aspects andimplementations of the disclosure, and performing certain actions.

In some implementations, some or all of the functionalities attributedherein to the system 10 may be provided by external resources notincluded in the system 10. External resources may include hosts/sourcesof information, computing, and/or processing and/or other providers ofinformation, computing, and/or processing outside of the system 10.

Although the processor 11 and the electronic storage 13 are shown to beconnected to the interface 12 in FIG. 1, any communication medium may beused to facilitate interaction between any components of the system 10.One or more components of the system 10 may communicate with each otherthrough hard-wired communication, wireless communication, or both. Forexample, one or more components of the system 10 may communicate witheach other through a network. For example, the processor 11 maywirelessly communicate with the electronic storage 13. By way ofnon-limiting example, wireless communication may include one or more ofradio communication, Bluetooth communication, Wi-Fi communication,cellular communication, infrared communication, or other wirelesscommunication. Other types of communications are contemplated by thepresent disclosure.

Although the processor 11 is shown in FIG. 1 as a single entity, this isfor illustrative purposes only. In some implementations, the processor11 may comprise a plurality of processing units. These processing unitsmay be physically located within the same device, or the processor 11may represent processing functionality of a plurality of devicesoperating in coordination. The processor 11 may be configured to executeone or more components by software; hardware; firmware; some combinationof software, hardware, and/or firmware; and/or other mechanisms forconfiguring processing capabilities on the processor 11.

It should be appreciated that although computer program components areillustrated in FIG. 1 as being co-located within a single processingunit, in implementations in which processor 11 comprises multipleprocessing units, one or more of computer program components may belocated remotely from the other computer program components. Whilecomputer program components are described as performing or beingconfigured to perform operations, computer program components maycomprise instructions which may program processor 11 and/or system 10 toperform the operation.

While computer program components are described herein as beingimplemented via processor 11 through machine-readable instructions 100,this is merely for ease of reference and is not meant to be limiting. Insome implementations, one or more functions of computer programcomponents described herein may be implemented via hardware (e.g.,dedicated chip, field-programmable gate array) rather than software. Oneor more functions of computer program components described herein may besoftware-implemented, hardware-implemented, or software andhardware-implemented

The description of the functionality provided by the different computerprogram components described herein is for illustrative purposes, and isnot intended to be limiting, as any of computer program components mayprovide more or less functionality than is described. For example, oneor more of computer program components may be eliminated, and some orall of its functionality may be provided by other computer programcomponents. As another example, processor 11 may be configured toexecute one or more additional computer program components that mayperform some or all of the functionality attributed to one or more ofcomputer program components described herein.

The electronic storage media of the electronic storage 13 may beprovided integrally (i.e., substantially non-removable) with one or morecomponents of the system 10 and/or removable storage that is connectableto one or more components of the system 10 via, for example, a port(e.g., a USB port, a Firewire port, etc.) or a drive (e.g., a diskdrive, etc.). The electronic storage 13 may include one or more ofoptically readable storage media (e.g., optical disks, etc.),magnetically readable storage media (e.g., magnetic tape, magnetic harddrive, floppy drive, etc.), electrical charge-based storage media (e.g.,EPROM, EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive,etc.), and/or other electronically readable storage media. Theelectronic storage 13 may be a separate component within the system 10,or the electronic storage 13 may be provided integrally with one or moreother components of the system 10 (e.g., the processor 11). Although theelectronic storage 13 is shown in FIG. 1 as a single entity, this is forillustrative purposes only. In some implementations, the electronicstorage 13 may comprise a plurality of storage units. These storageunits may be physically located within the same device, or theelectronic storage 13 may represent storage functionality of a pluralityof devices operating in coordination.

FIG. 2 illustrates method 200 for stabilizing videos. The operations ofmethod 200 presented below are intended to be illustrative. In someimplementations, method 200 may be accomplished with one or moreadditional operations not described, and/or without one or more of theoperations discussed. In some implementations, two or more of theoperations may occur substantially simultaneously.

In some implementations, method 200 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, a central processingunit, a graphics processing unit, a microcontroller, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operation of method 200 in response to instructions storedelectronically on one or more electronic storage mediums. The one ormore processing devices may include one or more devices configuredthrough hardware, firmware, and/or software to be specifically designedfor execution of one or more of the operation of method 200.

Referring to FIG. 2 and method 200, at operation 201, video informationdefining a spherical video may be obtained. The spherical video mayinclude spherical video content having a progress length. The sphericalvideo content may include visual content viewable from a point of viewas a function of progress through the progress length. In someimplementation, operation 201 may be performed by a processor componentthe same as or similar to the video information component 102 (Shown inFIG. 1 and described herein).

At operation 202, a horizontal feature within the visual content may beidentified. In some implementations, operation 202 may be performed by aprocessor component the same as or similar to the horizontal featurecomponent 104 (Shown in FIG. 1 and described herein).

At operation 203, a fixed feature within the visual content may beidentified. The fixed feature may be different from the horizontalfeature. In some implementations, operation 203 may be performed by aprocessor component the same as or similar to the fixed featurecomponent 106 (Shown in FIG. 1 and described herein).

At operation 204, the visual content may be rotated based on thehorizontal feature and the fixed feature to stabilize the sphericalvideo. In some implementations, operation 204 may be performed by aprocessor component the same as or similar to the rotation component 108(Shown in FIG. 1 and described herein).

Although the system(s) and/or method(s) of this disclosure have beendescribed in detail for the purpose of illustration based on what iscurrently considered to be the most practical and preferredimplementations, it is to be understood that such detail is solely forthat purpose and that the disclosure is not limited to the disclosedimplementations, but, on the contrary, is intended to covermodifications and equivalent arrangements that are within the spirit andscope of the appended claims. For example, it is to be understood thatthe present disclosure contemplates that, to the extent possible, one ormore features of any implementation can be combined with one or morefeatures of any other implementation.

What is claimed is:
 1. A system that stabilizes videos, the systemcomprising: one or more physical processors configured bymachine-readable instructions to: obtain video information defining aspherical video, the spherical video including visual content capturedby an image capture device, the visual content including depiction ofjerky or shaky motion due to rotation of the image capture device duringcapture of the visual content; identify a horizontal feature within thevisual content; identify a fixed feature within the visual content, thefixed feature different from the horizontal feature, the fixed featuredepicting an object that is fixed in space for stabilization of thevisual content; and perform stabilization of the spherical video basedon the horizontal feature and the fixed feature within the visualcontent to compensate for the rotation of the image capture deviceduring capture of the visual content, the stabilization of the sphericalvideo including tilt stabilization that rotates the visual content basedon the horizontal feature to orient video frames of the spherical videoaccording to position of the horizontal feature and lateralstabilization that rotates the visual content based on the fixed featureto orient the video frames of the spherical video according to positionof the fixed feature.
 2. The system of claim 1, wherein the fixedfeature includes a depiction of a distant object within the visualcontent.
 3. The system of claim 2, wherein the distant object includes alight source.
 4. The system of claim 3, wherein the distant object isidentified based on identification of a round shape and saturation ofpixels within the round shape.
 5. The system of claim 4, wherein thedistant object includes the Sun.
 6. The system of claim 5, wherein theposition of the fixed feature within the visual content is changed forstabilization of the spherical video as a function of progress through aprogress length of the spherical video to account for movement of theSun during the progress length.
 7. The system of claim 1, wherein thevideo frames are oriented according to the position of the horizontalfeature and the position of the fixed feature to minimize displacementof the horizontal feature and the fixed feature between the videoframes.
 8. The system of claim 1, wherein the horizontal featureincludes a depiction of a horizon within the visual content.
 9. Thesystem of claim 8, wherein the horizon is identified based on varianceof pixel characteristic within the visual content.
 10. The system ofclaim 9, wherein the horizon is identified such that a first variance ofpixel characteristics below the horizon and a second variance of pixelcharacteristics above the horizon are minimized.
 11. A method forstabilizing videos, the method performing by a computing systemincluding one or more processors, the method comprising: obtaining, bythe computing system, video information defining a spherical video, thespherical video including visual content captured by an image capturedevice, the visual content including depiction of jerky or shaky motiondue to rotation of the image capture device during capture of the visualcontent; identifying, by the computing system, a horizontal featurewithin the visual content; identifying, by the computing system, a fixedfeature within the visual content, the fixed feature different from thehorizontal feature, the fixed feature depicting an object that is fixedin space for stabilization of the visual content; and performing, by thecomputing system, stabilization of the spherical video based on thehorizontal feature and the fixed feature within the visual content tocompensate for the rotation of the image capture device during captureof the visual content, the stabilization of the spherical videoincluding tilt stabilization that rotates the visual content based onthe horizontal feature to orient video frames of the spherical videoaccording to position of the horizontal feature and lateralstabilization that rotates the visual content based on the fixed featureto orient the video frames of the spherical video according to positionof the fixed feature.
 12. The method of claim 11, wherein the fixedfeature includes a depiction of a distant object within the visualcontent.
 13. The method of claim 12, wherein the distant object includesa light source.
 14. The method of claim 13, wherein the distant objectis identified based on identification of a round shape and saturation ofpixels within the round shape.
 15. The method of claim 14, wherein thedistant object includes the Sun.
 16. The method of claim 15, wherein theposition of the fixed feature within the visual content is changed forstabilization of the spherical video as a function of progress through aprogress length of the spherical video to account for movement of theSun during the progress length.
 17. The method of claim 11, wherein thevideo frames are oriented according to the position of the horizontalfeature and the position of the fixed feature to minimize displacementof the horizontal feature and the fixed feature between the videoframes.
 18. The method of claim 11, wherein the horizontal featureincludes a depiction of a horizon within the visual content.
 19. Themethod of claim 18, wherein the horizon is identified based on varianceof pixel characteristic within the visual content.
 20. The method ofclaim 19, wherein the horizon is identified such that a first varianceof pixel characteristics below the horizon and a second variance ofpixel characteristics above the horizon are minimized.